package Buscaminas.Principal;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;

import Buscaminas.Dialogos.DialogoOpciones;

@SuppressWarnings("serial")
public class Vista extends JPanel{
	
	/**
	 * VARIABLES DE INSTANCIA
	 */
	//Varibles alto, ancho y minas, el constructor las inicializa con las variables de DialogoOpciones previamente seleccionadas por el jugador
	private int alto, ancho, minas;
	
	//Tablero
	private JButton [][] tablero;// Tablero de botones
	private Icon iTableroDefecto;// Icono por defecto del tablero (el icono de las bombas no lo necesitamos en la vista)
	
	//Barras
	private JMenuBar mbPrincipal;
	private JMenu mJuego;
	private JMenu mAyuda;
	private JMenuItem miNuevoJuego;
	private JMenuItem miEstadisticas;
	private JMenuItem miOpciones;
	private JMenuItem miCambiarApariencia;
	private JMenuItem miSalir;
	private JMenuItem miChivato;
	
	//Informacion (panel de abajo)
	private JLabel lIconTiempo, lIconBombas;// Label con los iconos correspondientes
	private JLabel lTiempo, lBombas;// Label que indican el tiempo y el n� de bombas

	
	/**
	 * CONSTRUCTOR
	 */
	public Vista(){
		
		DialogoOpciones o = new DialogoOpciones();
		
		this.alto = o.getAlto();
		this.ancho = o.getAncho();
		this.minas = o.getMinas();
		this.setLayout(new BorderLayout());
		
		//Barras
		mbPrincipal = new JMenuBar();
		mJuego = new JMenu("Juego");								mbPrincipal.add(mJuego);
		mAyuda = new JMenu("Ayuda");								mbPrincipal.add(mAyuda);
		miNuevoJuego = new JMenuItem("Nuevo Juego");				mJuego.add(miNuevoJuego);
																	mJuego.addSeparator();
		miEstadisticas = new JMenuItem("Estadisticas");				mJuego.add(miEstadisticas);
		miCambiarApariencia = new JMenuItem("Cambiar Apariencia");	mJuego.add(miCambiarApariencia);
																	mJuego.addSeparator();
		miSalir = new JMenuItem("Salir");							mJuego.add(miSalir);
		miChivato = new JMenuItem("Chivato");						mAyuda.add(miChivato);
		
		// Panel tablero
		JPanel pTablero = new JPanel(new GridLayout(alto,ancho));	this.add("North",pTablero);
		tablero = new JButton[alto][ancho];
		iTableroDefecto = new ImageIcon("img/tablero1_18.png");//Textura(icono) de las casillas por defecto
		// Inicializar los botones del tablero y aplicarle una serie de propiedades
		for(int i=0; i<alto; i++){
			for(int k=0; k<ancho; k++){
				tablero[i][k] = new JButton();
				tablero[i][k].setPreferredSize(new Dimension(20, 20));
				tablero[i][k].setIcon(iTableroDefecto);
				tablero[i][k].setBorder(new LineBorder(Color.GRAY, 1, true));
				pTablero.add(tablero[i][k]);
			}
		}
		
		//Panel Informacion (panel de abajo)
		JPanel pInformacion = new JPanel(new BorderLayout());		this.add("South",pInformacion);
		
		JPanel pInfTiempo = new JPanel(new BorderLayout());			pInformacion.add("West",pInfTiempo);
																	pInfTiempo.add("West",new JLabel("          "));
		lIconTiempo = new JLabel(new ImageIcon("img/reloj_24.png"));		pInfTiempo.add("Center",lIconTiempo);
		
		lTiempo = new JLabel("0");									pInfTiempo.add("East",lTiempo);

		JPanel pInfBombas = new JPanel(new BorderLayout());			pInformacion.add("East",pInfBombas);
		lIconBombas = new JLabel(new ImageIcon("img/bomba1_16.png"));	pInfBombas.add("West",lIconBombas);
		lBombas = new JLabel("   0   ");							pInfBombas.add("Center",lBombas);
																	pInfBombas.add("East",new JLabel("          "));
	}
	
	
	
	/**
	 * M�todo que a�ade el control
	 */
	public void control(Controlador ctr)
	{
		// Botones del buscaminas
		for(int i=0; i<alto; i++)
			for(int k=0; k<ancho; k++){
				tablero[i][k].addActionListener(ctr);
				tablero[i][k].addMouseListener(ctr);// Para el 2� Bot�n del rat�n
			}
		
		// Barras
		miNuevoJuego.addActionListener(ctr);
		miEstadisticas.addActionListener(ctr);
		miCambiarApariencia.addActionListener(ctr);
		miSalir.addActionListener(ctr);
		miChivato.addActionListener(ctr);
		

	}
	
	/**
	 * GET y SET
	 */
	public int getAlto() {return alto;}
	public int getAncho() {return ancho;}
	public int getMinas() {return minas;}
	public JButton[][] getTablero() {return tablero;}
	public JMenuBar getMbPrincipal() {return mbPrincipal;}
	public JMenu getmJuego() {return mJuego;}
	public JMenu getmAyuda() {return mAyuda;}
	public JMenuItem getMiNuevoJuego() {return miNuevoJuego;}
	public JMenuItem getMiEstadisticas() {return miEstadisticas;}
	public JMenuItem getMiOpciones() {return miOpciones;}
	public JMenuItem getMiCambiarApariencia() {return miCambiarApariencia;}
	public JMenuItem getMiSalir() {return miSalir;}
	public JMenuItem getMiChivato() {return miChivato;}
	public Icon getiTableroDefecto() {return iTableroDefecto;}
	public JLabel getlIconTiempo() {return lIconTiempo;}
	public JLabel getlIconBombas() {return lIconBombas;}
	public JLabel getlTiempo() {return lTiempo;}
	public JLabel getlBombas() {return lBombas;}

	public void setAlto(int alto) {this.alto = alto;}
	public void setAncho(int ancho) {this.ancho = ancho;}

	
	
}//End class